import { getSysCodeByTypeCode } from '@/api/management/code'
import { getBsContactsGroup } from '@/api/smsManage/groupContacts'
import { getFilePrivate } from '@/api/public'
import { Message } from 'element-ui'

// 获取代码表数据
export async function getSelectData (code) {
  let res = await getSysCodeByTypeCode(code)
  let options = []
  if (res.data && res.data.bdata) {
    let keys = Object.keys(res.data.bdata)
    let values = Object.values(res.data.bdata)
    keys.forEach((item, index) => {
      options.push({
        value: item.toString(),
        label: values[index]
      })
    })
  }
  return options
}

// 获取短信分组数据
export async function getContactsGroupData (data) {
  data = data ? JSON.parse(JSON.stringify(data)) : {}
  data.currPage = data.currPage ? data.currPage : 1
  data.pageSize = data.pageSize ? data.pageSize : 999999
  let res = await getBsContactsGroup(data)
  let options = []
  if (res.data && res.data.bdata.total > 0) {
    options = res.data.bdata.gdata.map(item => {
      return {
        value: item.id.toString(),
        label: item.groupName
      }
    })
  }
  return options
}

/**
 * @description 根据id获取图片地址
 * @param {string} id
 * @returns {Blob}
 */
export async function getImgUrl (id) {
  let res = await getFilePrivate(id)
  let blob = new Blob([res], {
    type: 'application/img'
  })
  return URL.createObjectURL(blob)
}

/**
 * @description 导出excel方法
 * @param {string} id 导出数据的id
 * @param {string} name 导出名字
 */
export async function exportExcelFn (id, name) {
  // 获取文件流
  let fileData = await getFilePrivate(id)
  Message.info('正在下载中...')
  // 创建blob对象 格式是xlsx
  let blob = new Blob([fileData], {
    type: 'application/xlsx'
  })
  let downloadElement = document.createElement('a')
  let href = window.URL.createObjectURL(blob) //创建下载链接
  // 下载的文件名字
  let fileName = `${name}.xlsx`
  downloadElement.href = href
  downloadElement.download = decodeURIComponent(fileName) //解码
  document.body.appendChild(downloadElement)
  downloadElement.click()
  document.body.removeChild(downloadElement)
  window.URL.revokeObjectURL(href) //释放掉bLob对象
}

import {
  BsTemplateApi,
} from "@/api/templateManage";
//获取模板树(扁平结构)
export async function convertToTreeData () {
  let apiResponse = await BsTemplateApi({ currPage: 1, pageSize: 99999 });
  // 检查接口返回的数据结构
  if (apiResponse && apiResponse.data && apiResponse.data.bdata && Array.isArray(apiResponse.data.bdata.gdata)) {
    // 将 gdata 数组转换为树形控件所需的格式
    return apiResponse.data.bdata.gdata.map(item => ({
      id: item.id,
      label: item.templateCode + '-' + item.templateName,
      children: [] // 假设没有子节点
    }));
  } else {
    // 如果数据结构不符合预期，返回空数组
    return [];
  }
}



function buildTree (data) {
  const temp = {};
  const treeData = [];

  // 将所有节点存储在临时对象中，以 id 为键
  data.forEach(item => {
    temp[item.id] = { ...item, children: [] };
  });

  // 构建树形结构
  Object.values(temp).forEach(item => {
    if (item.pid === null || item.pid === "") {
      // 如果 pid 为 null 或空字符串，则该节点为根节点
      item.type = 'parent'; // 设置 type 为 'parent'
      treeData.push(item);
    } else {
      // 如果 pid 不为 null 或空字符串，则将当前节点添加到其父节点的 children 数组中
      if (temp[item.pid]) {
        item.type = 'child'; // 设置 type 为 'child'
        temp[item.pid].children.push(item);
      }
    }
  });

  return treeData;
}


import { ProjectEvalInfoTemplateTreeApi } from "@/api/evaluationPreview";
//获取项目树(树形数据结构)
export async function convertToTreeDataProject () {
  let apiResponse = await ProjectEvalInfoTemplateTreeApi({ currPage: 1, pageSize: 99999 });
  // 检查接口返回的数据结构
  if (apiResponse && apiResponse.data && apiResponse.data.bdata && Array.isArray(apiResponse.data.bdata)) {
    const treeData = buildTree(apiResponse.data.bdata);
    // console.log('buildTree(treeData)', apiResponse.data.bdata, treeData);
    return treeData
  } else {
    // 如果数据结构不符合预期，返回空数组
    return [];
  }


}